﻿using DAO;
using DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BUS
{
    public class Q_BUSKhamBenh
    {
        /// <summary>
        /// Thống kê bệnh nhân theo tháng
        /// </summary>
        /// <param name="thang">Tháng thống kê</param>
        /// <param name="nam">Năm thống kê</param>
        /// <returns></returns>
        public List<TKBenhNhanThang> dsBenhNhanTheoThang(int Thang, int Nam)
        {
            try
            {
                Q_DAOKhamBenh DAOkb = new Q_DAOKhamBenh();
                return DAOkb.dsBenhNhanTheoThang(Thang, Nam);
            }
            catch(Exception)
            {
                throw new Exception("E_KB_001: Lỗi không lấy được danh sách bệnh nhân theo tháng");
            }
        }

        /// <summary>
        /// Kiểm tra tháng khám bệnh có tồn tại trong csdl
        /// </summary>
        /// <param name="ds">Danh sách bệnh nhân khám bệnh của năm</param>
        /// <param name="Thang">Tháng kiểm tra</param>
        /// <returns></returns>
        private bool KiemTraThangKhamTonTai(int Thang, List<TKBenhNhanNam> ds)
        {
            for (int i = 0; i < ds.Count; i++)
            {
                if (Thang == ds[i].Thang)
                {
                    return true;
                }
            }
            return false;
        }

        /// <summary>
        /// Thống kê bệnh nhân theo năm
        /// </summary>
        /// <param name="nam">Năm thống kê</param>
        /// <returns></returns>
        public List<TKBenhNhanNam> dsBenhNhanTheoNam(int Nam)
        {
            try
            {
                Q_DAOKhamBenh DAOkb = new Q_DAOKhamBenh();
                List<TKBenhNhanNam> dsTKBenhNhanNam = null, dsResult = null;
                Q_DAOChi DAOchi = new Q_DAOChi();
                dsResult = DAOkb.dsBenhNhanTheoNam(Nam);
                dsTKBenhNhanNam = new List<TKBenhNhanNam>();
                int index = 0;
                for (int i = 1; i <= 12; i++)
                {
                    if (KiemTraThangKhamTonTai(i, dsResult))
                    {
                        dsTKBenhNhanNam.Add(new TKBenhNhanNam() { Thang = i, TongSo = dsResult[index].TongSo });
                        index++;
                    }
                    else dsTKBenhNhanNam.Add(new TKBenhNhanNam() { Thang = i, TongSo = 0 });
                }
                return dsTKBenhNhanNam;
            }
            catch (Exception)
            {
                throw new Exception("E_KB_002: Lỗi không lấy được danh sách bệnh nhân theo năm.");
            }
        }
    }
}
